Published: Jan 13, 2020 by Dev-hwon
API?
API(Application Programming Interface)
- 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
- 두개의 시스템이 서로 상호 작용하기 위한 인터페이스
- API라 하면 보통 REST API를 지칭
- 웹사이트는 HTTP(S) 프로토콜을 사용하는 REST API 기반으로 구축
API 접근 권한
Authentication VS Authorization
- Authentication: Identity(정체)가 맞다는 증명
- Authorization: API를 통한 어떠한 액션을 허용
API가 Authentication을 하여도 어떠한 액션에 대해서는 Authorization을 허용하지 않을 수 있음
API의 시큐리티(보안)
어떠한 시큐리티 (보안) 방안이 없을 경우:
- DELETE 리퀘스트를 통해서 다른 이용자의 정보를 지울 수도 있음
- 제 3자에게 데이터 유출로 이어질 수 있음
- 누가 API를 사용하는지, 어떤 정보를 가져가는지 트래킹 할 수 없음
API Key
API Key란 Request URL 혹은 Request 헤더에 포함되는 긴 스트링
Basic Auth
Basic Auth의 경우 username:password 와 같은 Credential을 Base64로 인코딩한 값을 Request 헤더 안에 포함
Resource
API를 통해 리턴된 정보 하나의 Resource 안에 여러개의 Endpoints가 존재
Endpoint
Resource를 엑세스하는 경로/방법
GET/comapaigns/{campaign_id}/actions/send
- GET: Method
- comapaigns/{campaign_id}/actions/send: Endpoint
Method
Method | 내용 |
---|---|
GET | 해당 리소스를 조회하고 정보를 가져옴 |
HEAD | GET 방식과 동일하나 응답코드와 HEAD만 가져옴 |
POST | 요청된 리소스를 생성 |
PUT | 요청된 리소스를 업데이트 |
DELETE | 요청된 리소스를 삭제 |
Parameter
Endpoint를 통해 리퀘스트 할 때 같이 전달하는 옵션들
Type | 내용 |
---|---|
Header | Request header에 포함되는 Parameter로 주로 Authorization에 관련 |
Path | Query String (?) 이전에 Endpoint Path 안에 포함되는 변수 예) {id} |
Query String | Query String (?) 이후에 포함되는 Parameters 예) ?utm_source=facebook&utm_campaign=summer_sales |
Request Body | Request Body 안에 포함되는 Parameters. 주로 JSON 형태 |